package BlogMybatis.blog.pojo;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author Brandt
 * @since 2020-06-07
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class Blog implements Serializable {

    private static final long serialVersionUID=1L;

    /**
     * 博客id
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 博客标题
     */
    private String title;

    /**
     * 博客内容
     */
    private String content;

    /**
     * 首图
     */
    private String firstPicture;

    /**
     * 是否原创
     */
    private String flag;

    /**
     * 浏览数
     */
    private Long views;

    /**
     * 赞赏
     */
    private boolean appreciation;

    /**
     * 是否转载
     */
    private boolean shareStatement;

    /**
     * 是否评论
     */
    private boolean commentabled;

    /**
     * 是否发布
     */
    private boolean published;

    /**
     * 是否推荐
     */
    private boolean recommend;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 修改时间
     */
    private Date updateTime;

    /**
     * 分类id
     */
    private Long typeId;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 博客描述
     */
    private String description;

    /**
     * 博客标签
     */
    //获取多个标签的id
    private String tagIds;

    @TableField(exist = false)
    private Type type;

    @TableField(exist = false)
    private User user;

    //一个博客有多个标签
    @TableField(exist = false)
    private List<Tag> tags = new ArrayList<>();

    @TableField(exist = false)
    private List<Comment> comments = new ArrayList<>();

    public void init(){
        this.tagIds = tagsToIds(this.getTags());
    }

    //将tags集合转换成tagsIds字符串形式：1,2,3。用于编辑博客时显示博客的tag
    private String tagsToIds(List<Tag> tags){
        if(!tags.isEmpty()){
            StringBuffer ids = new StringBuffer();
            //定义一个开关，如果tags循环之后，开关是false，加一个后缀，继续添加tag，true的话，就结束添加tag
            boolean flag = false;
            for (Tag tag : tags) {
                if(flag){
                    ids.append(",");
                }else {
                    flag = true;
                }
                ids.append(tag.getId());
            }
            return ids.toString();
        }
        else {
            return tagIds;
        }
    }
}
